<?php

namespace App\Http\Controllers\OperationManagement;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Models\OperationManagement\SanitationData;
use Illuminate\Database\QueryException;
use App\Http\Requests\OperationManagement\SanitationDataRequest;

/**
 * @group 基础信息管理->环卫->道路基础数据表
 *
 * 采用 restful api
 *
 * Body Parameters 表示请求的所需要的参数
 *
 * Query Parameters 表示返回参数的名称
 */

class SanitationDataController extends Controller
{
    /**
     * 道路基础数据查看列表
     *
     * @queryParam nodeID int 路口编号
     * @queryParam lon decimal 经度 115.24556
     * @queryParam lat decimal 纬度 25.14551
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        $per_page = $request->input('per_page',10);
        $data = SanitationData::orderBy('id','desc')->paginate($per_page);
        return response()->json(encodeMsg($data,200));
    }

    /**
     * 新增道路基础数据
     *
     * @bodyParam nodeID int 路口编号
     * @bodyParam lon decimal 经度 115.24556
     * @bodyParam lat decimal 纬度 25.14551
     *
     * @queryParam nodeID int 路口编号
     * @queryParam lon decimal 经度 115.24556
     * @queryParam lat decimal 纬度 25.14551
     *
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        try {
            $data = $request->all();
            SanitationData::insert($data);
            return response()->json(encodeMsg($data,201));
        } catch (QueryException $e) {
            return response()->json(encodeMsg(['message' => '道路基础数据添加失败!'],400));
        }
    }

    /**
     * 查看道路基础数据
     *
     * @bodyParam id int require 道路基础数据id
     *
     * @queryParam nodeID int 路口编号
     * @queryParam lon decimal 经度 115.24556
     * @queryParam lat decimal 纬度 25.14551
     *
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        $data = SanitationData::find($id);
        if($data == []) {
            return response()->json(encodeMsg(["message" => "没有该道路基础数据信息!"], 404));
        } else {
            return response()->json(encodeMsg($data,200));
        }
    }

    /**
     * 修改道路基础数据
     *
     * @bodyParam id int require 道路基础数据id
     * @bodyParam nodeID int 路口编号
     * @bodyParam lon decimal 经度 115.24556
     * @bodyParam lat decimal 纬度 25.14551
     *
     * @queryParam nodeID int 路口编号
     * @queryParam lon decimal 经度 115.24556
     * @queryParam lat decimal 纬度 25.14551
     *
     * @return \Illuminate\Http\Response
     */
    public function update(SanitationDataRequest $request, $id)
    {
        $sanitationData = SanitationData::find($id);
        if($sanitationData == []) {
            return response()->json(encodeMsg(["message" => "没有该道路基础数据信息!"], 404));
        }
        try {
            $data = $request->all();
            $sanitationData->update($data);
            return response()->json(encodeMsg($sanitationData,200));
        } catch (QueryException $e) {
            return response()->json(encodeMsg(['message' => '道路基础数据修改失败!'],400));
        }
    }

    /**
     * 删除道路基础数据
     *
     *
     * @bodyParam id int required  道路基础数据id
     * @response 204 {
     *   "message": "道路基础数据删除成功"
     * }
     *
     *
     * @response 404 {
     *  "message": "没有该道路基础数据信息"
     * }
     *
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        $sanitationData = SanitationData::find($id);
        if($sanitationData == []) {
            return response()->json(encodeMsg(["message" => "没有该道路基础数据信息!"], 404));
        }
        if($sanitationData->delete()) {
            return response()->json(encodeMsg(["message" => "道路基础数据删除成功!"], 204));
        } else {
            return response()->json(encodeMsg(["message" => "道路基础数据删除失败!"], 400));
        }
    }

    /**
     * 批量删除道路基础数据
     *
     * @bodyParam  ids int required  id集合字符串[格式：ids=1,2,3]
     * @response 204 {
     *   "message": "道路基础数据删除成功"
     * }
     *
     *
     */
    public function delete($ids)
    {
        $listId = explode(',', $ids);
        SanitationData::whereIn('id',$listId)->delete();
        return response()->json(encodeMsg(["message" => "道路基础数据删除成功!"], 204));
    }
}
